# -*- coding:utf-8 -*-
# @file：base_page.py
# @Time： 22:39
# @Author：Zhang Jinxia
from selenium import webdriver
from selenium.webdriver.chrome.webdriver import WebDriver

class BasePage:
    """
    BasePage提供公共方法的封装，即和页面逻辑无关的封装
    比如解决driver初始化的问题

    添加base_url，可以支持测试用例灵活配置起始页
    实现页面完全和业务逻辑解耦
    """
    _base_url = ""
    def __init__(self,base_driver=None):

        if base_driver is None:
            # 通过remote 复用浏览器
            chomre_arg=webdriver.ChromeOptions()
            # 加入调试地址
            chomre_arg.debugger_address='127.0.0.1:9222'
            # 实例化driver对象
            self.driver=webdriver.Chrome(options=chomre_arg)
            # 打开首页
            self.driver.get(self._base_url)
            self.driver.implicitly_wait(20)
            self.driver.maximize_window()
        else:
            # 将self.driver添加一个WebDriver对象注释，解决类型提示的问题
            # 注释本身没有任何的赋值作用，方便操作
            self.driver: WebDriver = base_driver

    def find(self,by,locator=None):
        # 如果只传入一个元组，则进行解包
        if locator is None:
            return self.driver.find_element(*by)
        # 适配多种传参情景
        else:
            return self.driver.find_element(by=by,value=locator)

